package com.wyx.suanfa;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class nextPermutation {
    //整数数组的一个 排列  就是将其所有成员以序列或线性顺序排列。
    //
    //例如，arr = [1,2,3] ，以下这些都可以视作 arr 的排列：[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。
    //整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。
    // 更正式地，如果数组的所有排列根据其字典顺序从小到大排列在一个容器中，
    // 那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。
    // 如果不存在下一个更大的排列，那么这个数组必须重排为字典序最小的排列（即，其元素按升序排列）。
    public static void main(String[] args) {

    }
}
/*
* class Solution {
    public void nextPermutation(int[] nums) {
        int len = nums.length;
        for(int i = len - 1;i>= 0;i--){
            for(int j = len - 1;j > i ;j--){
                if(nums[j] > nums[i]){
                    //交换
                    int temp = nums[j];
                    nums[j] = nums[i];
                    nums[i] = temp;
                    // [i + 1, nums.length) 内元素升序排序
                    Arrays.sort(nums,i + 1 , len);
                    return;
                }
            }
        }
        // 不存在下一个更大的排列，则将数字重新排列成最小的排列（即升序排列）。
         Arrays.sort(nums);
    }
}*/